/**
 * Copyright 2008-2009. Chongqing Communications Industry Services Co.,Ltd Information Technology Branch. All rights
 * reserved. <a>http://www.cqcis.com</a>
 */
package com.cq.bd.utils;

/**
 * 字符串工具类
 * 
 * @author huangmy
 * @date   2008-3-18
 */
public class StringUtil {
	/**
	 * 去掉字符串两边空白字符，如果全部是空白字符，则返回null
	 * 
	 * @param str
	 * @return
	 */
	public static String trimWhiteToNull(String str) {
		if (str == null) {
			return null;
		}
		
		str = str.trim();
		
		if (str.length() <= 0) {
			return null;
		}
		
		return str;
	}


	/**
	 * 是否有字符
	 * 
	 * @param str
	 * @return
	 */
	public static boolean hasText(String str) {
		return trimWhiteToNull(str) != null ? true : false;
	}
	
	/**
	 * byte到十六进制字符串显示
	 * 
	 * @param b
	 * @param prefix true 带0x前缀
	 * @return
	 */
	public static String toHexString(byte b, boolean prefix) {		
		if (prefix) {
			return String.format("0x%0" + 2 + "X", b);
		}
		return String.format("%0" + 2 + "X", b);
	}
	
	/**
	 * long到十六进制字符串显示
	 * 
	 * @param number
	 * @param prefix true 带0x前缀
	 * @return
	 */
    public static String toHexString(long number, boolean prefix) {
    	if (prefix) {
		    return String.format("%0" + 16 + "X", number);
    	}
    	return String.format("0x%0" + 16 + "X", number);
	}
    
    /**
	 * int到十六进制字符串显示
	 * 
	 * @param number
	 * @param prefix true 带0x前缀
	 * @return
	 */
    public static String toHexString(int number, boolean prefix) { 
    	if (prefix) {
    		return String.format("%0" + 8 + "X", number);
    	}
    	return String.format("0x%0" + 8 + "X", number);
	}
    
    /**
	 * int到十六进制字符串显示
	 * 
	 * @param number
	 * @param prefix true 带0x前缀
	 * @return
	 */
    public static String toHexString(short number, boolean prefix) { 
    	if (prefix) {
		    return String.format("%0" + 4 + "X", number);
    	}
    	return String.format("0x%0" + 4 + "X", number);
	}
    
	/**
	 * 替换字符串中的指定字符，如果为空则返回null
	 * 
	 * @param str
	 * @return
	 */
	public static String replaceChar(String str,String fromStr,String toStr){
		if(str == null){
			return null;
		}

		if(str.indexOf(fromStr) < 0){
			return str;
		}

		str = str.replace(fromStr, toStr);
		
		return str;
	}
	
	/**
	 * 判断两个字符串是否相等
	 * 
	 * @param t
	 * @param o
	 * @return
	 */
	public static boolean eq(String t, String o) {
	    t = trimWhiteToNull(t);
	    o = trimWhiteToNull(o);
	    
	    if (t == null && o == null) {
	        return true;
	    }
	    
	    if (t == null && o != null) {
	        return false;
	    }
	    
	    if (t != null && o == null) {
	        return false;
	    }
	    
	    if (t != null && o != null) {
	        return t.equals(o);
	    }
	    
	    return false;
	}
}
